package com.example.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.Result;
import com.example.entity.Student;
import com.example.mapper.StudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@CrossOrigin
@RestController
@RequestMapping("/student")
public class StudentController {

     @Autowired
  /*   private StudentServiceImpl studentService;*/
     StudentMapper studentMapper;
     //这部分主要是有关学生表增删改查这几个功能，查询这里直接使用分页查询。这部分主要是参考B站up主青戈。

    @GetMapping("/page")  //分页
    public Result selectAll(@RequestParam String student_name,@RequestParam Integer start, @RequestParam Integer pageSize)
    {
        List<Student> studentList = studentMapper.selectPage(student_name,start,pageSize);
        Integer total = studentMapper.selectTotal(student_name);
        Map<String ,Object> map = new HashMap<>();  //Map是你自己定义的一个接口
        map.put("list",studentList);
        map.put("total",total);
        return Result.success(map);
    }


    @PostMapping("/save")
    public Result save (@RequestBody Student student){
        studentMapper.insert(student);
        return Result.success();
    }

    @PutMapping("/update")
    public Result update(@RequestBody Student student){
        studentMapper.update(student);
        return Result.success();
    }


   @DeleteMapping("/delete")
   public Result delete(@RequestParam  Integer student_no){
     studentMapper.delete(student_no);
     return Result.success();
 }

//HashMap就是一个散列表，它是通过“拉链法”解决哈希冲突。
// 哈希冲突：当我们对某个元素进行哈希运算，得到一个存储地址，然后要进行插入的时候，发现已经被其他元素占用了）也就是数组+链表的方式
//HashMap map = new HashMap();
//而这个 你定义的就是一个实现类，你把这个实现类给别人用，如果出现问题和改动的话，那么程序就无法运行，凡是用到这个类的地方都要修改，维护起来很麻烦，而上面的接口，你只需要改你实现这个接口的实现类就可以了。
// 这样就是你说的降低了藕合性。而且用Map的好处是new后面可以跟其他的实现，不一定是HashMap 可以跟其他的 用HashMap声明的话，new后面貌似就只能跟HashMap了




   /* @GetMapping("/all")
    public Result selectAll(@RequestParam String student_name)
    {
        List<Student> studentList = studentMapper.selectAll(student_name);
        return Result.success(studentList);
    }*/





 /*    @GetMapping("/page")
     public Page<Student> page (

         @RequestParam(defaultValue = "") String student_name,
         @RequestParam(defaultValue = "1") Integer current,
         @RequestParam(defaultValue = "15") Integer size
     ){
         return  studentService.page(current,size,student_name);
     }*/

  /*  @PostMapping("/save")
    public boolean save(@RequestBody Student student){
         return studentService.saveOrUpdateById(student);
    }

    @PostMapping("/delete")
    public boolean delete(@RequestBody List<Integer> student_ids){
        return studentService.deleteBatchIds(student_ids);
    }
*/




  /**    @PostMapping("/student")
          public String save(Student student)
        {
            int i = studentMapper.insert(student);
            if(i > 0 ){
                return "成功";}
            else{
                return  "失败";

            }}**/







}
